1. Field of the Invention
The invention relates to telephony voice response systems, and more particularly, to the extension of database languages to handle telephony voice response functions.
2. Description of Related Art
An interactive voice response (IVR) system is a system which allows callers to use a telephone to interact with a remote computer and retrieve data from, or enter data into, one or more databases. Usually callers enter information and commands by pressing buttons on a tone-generating telephone. The telephone generates a DTMF-encoded (dual-tone multi-frequency) signal in response to such buttons, and transmits the tones to the voice response system. The voice response system decodes the tones to determine which buttons were pressed, and proceeds accordingly. In other systems, callers enter information and commands by speaking into the telephone. In such a situation, the voice response system recognizes the words spoken and proceeds accordingly. IVR systems can be as simple as ordinary voice mail systems, or can be highly complex, with multiple menus and caller-data-entry facilities. They can support either a single telephony channel or multiple simultaneously active telephony channels.
IVR systems are typically developed by programming a general purpose computer system that has telephony hardware installed. For example, IVR systems often include a DOS-based personal computer with a telephony expansion card installed, such as a TyIN 4000 Pro Personal Communication Assistant, available from National Semiconductor Corporation, Santa Clara, Calif., or a Model D/41 available from Dialogic Corporation, Parsippany, N.J.
IVR systems usually need to have a high degree of flexibility for customization by value-added resellers (VARs) and by the MIS departments of end-user customers. VARs will often customize an IVR system for the needs of a particular customer, and many customers need to be able to modify their IVR systems themselves to meet changing requirements for their callers.
In the past, many IVR systems were difficult to customize because they were programmed in an ordinary, general purpose program language, such as C or C++. In order to speed application development and customization, some IVR system suppliers have developed proprietary libraries of C-language procedures which could manage both the control of the telephony hardware and also the data that the caller is accessing. Other suppliers have developed proprietary scripting languages, and provide an interpreter program written in C (or another general purpose programming language). The interpreter follows a script prepared by the developer. Still other suppliers have developed form, table or graphical (GUI) programming environments for IVR system development or customization. VARs and enduser customers have found all of these mechanisms difficult to learn and use, however, and this has restricted the growth of the IVR market.
One of the problems with the above mechanisms for IVR system development is that while they may be well-suited to managing the telephony aspects of the system, they are not as well suited to managing the database aspects of the system. Database management is best performed by facilities which are designed for that purpose, namely database management systems. A database management system (DBMS) is a software package designed to operate on a collection of one or more computer-stored files, or what is referred to as a database. Its primary operation is to select database records that have user-specified common characteristics, and retrieve those records for further processing and display. The database management system also adds new records to the database, and modifies existing records as desired. A typical database management system can include a non-procedural user interface through which a user at a terminal can cause the DBMS to perform desired operations on the database. A typical DBMS also includes a high-level programming language (referred to herein as a database language or a DBMS language) that can be used procedurally to operate on the data in the database. Often both the non-procedural interface and the procedural interface call a common set of procedures, referred to herein as the database engine, to perform the desired operations on the database. The simple, high-level commands supported by DBMSs to manage a database, such as "seek", "replace", "sort", and so on, are quite powerful. However, DBMSs do not support telephony functions.
It is desirable to use DBMSs in IVR applications also because they inherently manage their databases in the "native format" of the DBMS. Unlike general purpose programming languages which provide enormous flexibility to programmers in the formation of data structures, database management systems organize their databases in a predefined format which users rarely, if ever, need to understand. The high-level commands of a DBMS obviate any necessity for the programmer to be concerned with the underlying format in which the data is actually stored.
Once the data is already maintained in the DBMS native format, a host of additional applications become possible. DBMS language programs can be written easily to operate on the data independently of the telephony connections. For example, a bank might create and manage all of its account information using a DBMS, and have an IVR system for customers to call to retrieve such information. Such an IVR system would need to be able to obtain the desired information from the database in the DBMS native format. As another example, an IVR system might be designed to obtain information from callers and place the information in a database; reports can then be easily generated from the data using the various user interfaces of the DBMS. Thus an IVR system which maintains its data in the native format of a DBMS can be much more tightly integrated with the remainder of the customer's business.
In one conventional attempt to integrate native format database management in IVR systems, the IVR system and a database management system were set up to operate independently on two separate computer systems. The IVR system communicated with the DBMS system via terminal emulation, in which the IVR system acted as a user terminal communicating and receiving individual characters from a non-procedural terminal interface of the DBMS. The software for the IVR system was written in a general purpose programming language, and the character stream to and from the DBMS system took place through an ordinary I/O port of the IVR system computer. As might be expected, the terminal emulation technique can be extremely slow, inflexible, and arcane.
Another way that IVR system developers have sought to operate on a database in a native DBMS format, as part of an IVR system, was to provide a procedure library, written in a general purpose programming language such as C, which could be compiled with or linked to the main program module of the IVR application, also written in C. However, this technique required a detailed understanding of the DBMS native format and, in large part, duplicated all of the effort that DBMS manufacturers had already expended in the development of their own database engines and tools. It is also rare for IVR system developers to have the expertise necessary to optimize database management software to run as efficiently as that available from the DBMS manufacturer.
Accordingly, as can be seen, prior attempts to integrate IVR systems with native format DBMS databases have left much to be desired. The present invention achieves such integration much more effectively.